package day0516;

public abstract class Animal {
    int age;
    String name;
    abstract void eat();
    public  void drink(){
        System.out.println(name+"喝水");
    }
}


class Dog extends Animal{
    Dog(String n, int a) {
        name = n;
        age=a;
    }
    //eat()方法中打印： "啃骨头"
    void eat() {
        System.out.println(name+"吃狗粮");
    }
    void catchRabbit() {
        System.out.println(name+"撵兔子");
    }
}

class Cat extends Animal{
    Cat(String n, int a) {
        name = n;
        age=a;
    }
    //eat()方法中打印： "啃骨头"
    void eat() {
        System.out.println(name+"吃老鼠");
    }
    void catchMouse() {
        System.out.println(name+"抓老鼠");
    }
}

//this.成员变量：用于调用成员变量
class Master{//Master表示主人类， 包含一个 Animal a成员变量表示养的宠物
    Animal a;
    Master(Animal a) {//构造方法： 用于给成员变量a赋值(让a表示一个动物对象)
        this.a = a;
    }
    void feedPet(){
        if(a instanceof Dog){//a对象是否属于Dog类型
            Dog da=(Dog)a;
            da.catchRabbit();
        }
        if(a instanceof Cat){
            Cat ca=(Cat)a;
            ca.catchMouse();
        }
    }
}